#[derive(RustcDecodable)]
struct Options {
+ flag_color: Option<String>,
flag_features: Vec<String>,
+ flag_format_version: u32,
flag_manifest_path: Option<String>,
flag_no_default_features: bool,
flag_output_format: String,
flag_output_path: Option<String>,
- flag_verbose: bool,
flag_quiet: bool,
- flag_color: Option<String>,
+ flag_verbose: bool,
}
pub const USAGE: &'static str = "
cargo metadata [options]
Options:
- -h, --help Print this message
- -o, --output-path PATH Path the output is written to, otherwise stdout is used
- -f, --output-format FMT Output format [default: toml]
- Valid values: toml, json
- --features FEATURES Space-separated list of features
- --no-default-features Do not include the `default` feature
- --manifest-path PATH Path to the manifest
- -v, --verbose Use verbose output
- -q, --quiet No output printed to stdout
- --color WHEN Coloring: auto, always, never
+ -h, --help Print this message
+ -o, --output-path PATH Path the output is written to, otherwise stdout is used
+ -f, --output-format FMT Output format [default: toml]
+ Valid values: toml, json
+ --features FEATURES Space-separated list of features
+ --no-default-features Do not include the `default` feature
+ --manifest-path PATH Path to the manifest
+ --format-version VERSION Format version [default: 1]
+ Valid values: 1
+ -v, --verbose Use verbose output
+ -q, --quiet No output printed to stdout
+ --color WHEN Coloring: auto, always, never
";
pub fn execute(options: Options, config: &Config) -> CliResult<Option<()>> {
no_default_features: options.flag_no_default_features,
output_format: options.flag_output_format,
output_to: output_to,
+ version: options.flag_format_version,
};
try!(output_metadata(options, config));
use util::config::Config;
use util::{paths, CargoResult};
+const VERSION: u32 = 1;
/// Where the dependencies should be written to.
pub enum OutputTo {
pub struct OutputMetadataOptions<'a> {
pub features: Vec<String>,
- pub output_format: String,
- pub output_to: OutputTo,
pub manifest_path: &'a Path,
pub no_default_features: bool,
+ pub output_format: String,
+ pub output_to: OutputTo,
+ pub version: u32,
}
/// Loads the manifest, resolves the dependencies of the project to the concrete
opt.no_default_features));
let (packages, resolve) = deps;
+ assert_eq!(opt.version, VERSION);
let output = ExportInfo {
packages: &packages,
resolve: &resolve,
+ version: VERSION,
};
let serialized_str = match &opt.output_format.to_ascii_uppercase()[..] {
struct ExportInfo<'a> {
packages: &'a [Package],
resolve: &'a Resolve,
+ version: u32,
}